<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>自定义遍历数据</title>
  </head>

  <body>
    <script>
      /*
         创建一个指针对象，指向当前数据结构的起始位置
         第一次调用对象的next方法，指针自动指向数据结构的第一个成员
         接下来不断调用next方法，指针一直往后移动，直到指向最后一个成员
         每调用next方法返回一个包含value和done属性的对象

         注意：需要自定义遍历数据的时候，要想到迭代器
     */

      //声明一个对象
      const banji = {
        name: "终极一班",
        stus: ["xiaoming", "xiaossss", "sadaffaf", "asfafaff3"],
        [Symbol.iterator]() {
          //索引变量
          let index = 0;
          let _this = this;
          console.log(_this);
          return {
            next: function () {
              if (index < _this.stus.length) {
                const result = { value: _this.stus[index], done: false };
                //下标自增
                index++;
                //返回结果
                return result;
              } else {
                return { value: undefined, done: true };
              }
            },
          };
        },
      };
      //遍历这个对象
      for (let v of banji) {
        console.log(v);
      }
    </script>
  </body>
</html>
